package cn.tedu.ivos.geofence.pojo.vo;

import cn.tedu.ivos.vehicle.pojo.vo.VehicleVO;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;

//value object 用于让ssm项目将mysql的查询结果返回给controller
//controller以jsonResult对象的形式返回给页面
//(本项目是将mybatis查询的结果封装为GeofenceVO，再传递给service，再传递给controller，controller以jsonResult对象的形式返回给页面)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class GeofenceVO {
    @Schema(description = "围栏编号")
    private Long id;
    @Schema(description = "围栏名称")
    private String name;
    @Schema(description = "围栏状态")
    private String status;
    @Schema(description = "围栏坐标点")
    private String position;
    @Schema(description = "创建时间")//@JsonFormat: 将Date格式数据转化为JSON字符串
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    @Schema(description = "围栏已绑定车辆列表")
    private List<VehicleVO> vehicleVOList;//一个电子围栏区域可以设置给多个车辆
    @Schema(description = "围栏已绑定车辆总数")
    private Integer vehicleTotalCount;
    @Schema(description = "围栏可用车辆数")
    private Integer availableVehicleCount;
}


//1.vo中的实体类的@JsonFormat: Date---转为--->String类型的json字符串
//@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
//将数据库查询出来的GeofenceVO对象中Date格式的日期数据转化为JSON格式的字符串返回给页面

//2.
//DTO中的实体类中的@DateTimeFormat():  String类型的json字符串---转为--->Date类型
//前端el-form表单传过来的时间格式是string类型，
//所以需要用@DateTimeFormat格式化注解将时间转化为Date类型
//才能封装到VehicleSaveOrUpdateParamDTO对象中(否则会抛出TypeMisMatchException，报400异常)
//@DateTimeFormat(pattern = "yyyy-MM-dd")
